bz_stream stream;
int ret;
char *out_buf;
+ char *tmp_buf;
int retval = -1;
int outsize;
uint64_t total;
ret = BZ2_bzDecompressInit(&stream, 0, 0);
if ( ret != BZ_OK )
{
- xc_dom_printf("Error initting bz2 stream\n");
+ xc_dom_printf("BZIP2: Error initting stream\n");
return -1;
}
out_buf = malloc(outsize);
if ( out_buf == NULL )
{
- xc_dom_printf("Failed to alloc memory\n");
+ xc_dom_printf("BZIP2: Failed to alloc memory\n");
goto bzip2_cleanup;
}
ret = BZ2_bzDecompress(&stream);
if ( (stream.avail_out == 0) || (ret != BZ_OK) )
{
- out_buf = realloc(out_buf, outsize * 2);
- if ( out_buf == NULL )
+ tmp_buf = realloc(out_buf, outsize * 2);
+ if ( tmp_buf == NULL )
{
- xc_dom_printf("Failed to realloc memory\n");
- break;
+ xc_dom_printf("BZIP2: Failed to realloc memory\n");
+ free(out_buf);
+ goto bzip2_cleanup;
}
+ out_buf = tmp_buf;
stream.next_out = out_buf + outsize;
stream.avail_out = (outsize * 2) - outsize;
{
if ( ret == BZ_STREAM_END )
{
- xc_dom_printf("Saw data stream end\n");
+ xc_dom_printf("BZIP2: Saw data stream end\n");
retval = 0;
break;
}
- xc_dom_printf("BZIP error\n");
+ xc_dom_printf("BZIP2: error\n");
}
}
- total = (stream.total_out_hi32 << 31) | stream.total_out_lo32;
+ total = (((uint64_t)stream.total_out_hi32) << 32) | stream.total_out_lo32;
xc_dom_printf("%s: BZIP2 decompress OK, 0x%zx -> 0x%lx\n",
__FUNCTION__, *size, (long unsigned int) total);
lzma_ret ret;
lzma_action action = LZMA_RUN;
unsigned char *out_buf;
+ unsigned char *tmp_buf;
int retval = -1;
int outsize;
const char *msg;
ret = lzma_alone_decoder(&stream, physmem() / 3);
if ( ret != LZMA_OK )
{
- xc_dom_printf("Failed to init lzma stream decoder\n");
+ xc_dom_printf("LZMA: Failed to init stream decoder\n");
return -1;
}
out_buf = malloc(outsize);
if ( out_buf == NULL )
{
- xc_dom_printf("Failed to alloc memory\n");
+ xc_dom_printf("LZMA: Failed to alloc memory\n");
goto lzma_cleanup;
}
ret = lzma_code(&stream, action);
if ( (stream.avail_out == 0) || (ret != LZMA_OK) )
{
- out_buf = realloc(out_buf, outsize * 2);
- if ( out_buf == NULL )
+ tmp_buf = realloc(out_buf, outsize * 2);
+ if ( tmp_buf == NULL )
{
- xc_dom_printf("Failed to realloc memory\n");
- break;
+ xc_dom_printf("LZMA: Failed to realloc memory\n");
+ free(out_buf);
+ goto lzma_cleanup;
}
+ out_buf = tmp_buf;
stream.next_out = out_buf + outsize;
stream.avail_out = (outsize * 2) - outsize;
{
if ( ret == LZMA_STREAM_END )
{
- xc_dom_printf("Saw data stream end\n");
+ xc_dom_printf("LZMA: Saw data stream end\n");
retval = 0;
break;
}